接下來的東西需要一點程式基礎。
在 C/C++、java 或某些其他語言 裡,參數都帶有型態(ex:int、string、bool、char,等...),
但在 JS 宣告型態都用 var。
 //布林(Boolean)
 var Check1 = false;
 var Check2 = true;
 var Check3 = new Boolean(false); 
 //數值(Number)
 var num1 = 1;
 var num2 = new Number(2);
 //字串(String)
 var Str1 = "Helon";
 var Str2 = 'Helon';
 var Str3 = new String("Leo");
 //陣列(Array)
 var Array1 = [];              // Array1: [] 長度0
 var Array2 = new Array();     // Array2: [] 長度0
 var Array3 = new Array(3);    // Array3: [undefined,undefined,undefined] 長度3
 //物件(Object)
 var Object1 = {};
 var Object2 = new Object();
 var Man = {"name":""};
 var Object3 = new Object(Man);
 //空值(null)
 var Result = null;
 //未定義(undefined)
 var Result = undefined;
 //函式(Function)
 var fun1 = function(){ ... };
 var fun2 = () => { ... };
※以上為簡單介紹宣告的範例,
實際上,JS看似自由,但其實是一個大坑。
typeof : 是用來測試某資料的型別。
NaN : (Not a Number ,非數)表示未定義或不可表示的值。
所以在運用的使用需要非常的小心與警慎,
當你的專案越來越大時,追查就越加困難(笑)。
在程式方面,轉換型別是常有的事。
以下,就是各型別轉換方式:
//要轉換的範例們
var apple = 123;
var banana = "777.5";
//布林(Boolean)
Boolean(apple);
!!apple;
//數值(Number)
Number(banana);
banana - 0;
parseInt(banana);  // 整數
parseFloat(banana);// 浮點數
//字串(String)
String(apple);
apple.toString();  // 當null或undefined的時候無法使用
apple + "";
上一篇 NodeJS-安裝
下一篇 (Ubuntu)更改node js 版本方法
你所說的[大坑]都是源自javascript的[弱類型](weak typing)和[進取的類型轉換](aggressive type coercions)問題。也只是javascript衆多問題的[冰山一角]。
javascript的十宗罪
為何javascript那麽差勁
建議轉用Typescript。

感謝回應與指教w